package jdk8;

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Date;

/**
 * @author xiaoming
 * @version 1.0
 * @date 2018-11-04 11:29
 * Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理。
 * 旧版的 Java 中，日期时间 API 存在诸多问题: 如: 非线程安全,设计很差,时区处理麻烦
 **/
public class NewDateTimeAPI {

    public static void main(String[] args) {
        // 新的API
        // Local(本地) − 简化了日期时间的处理，没有时区的问题。
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("当前时间:　" + localDateTime.format(DateTimeFormatter.ofPattern("YYYY-MM-dd hh:mm:ss")) );
        System.out.println("以前 new Date(): " + new Date());

        LocalDate localDate = localDateTime.toLocalDate();
        System.out.println("date: " + localDate);
        System.out.println("time: " + localDateTime.toLocalTime() );

        Month month = localDateTime.getMonth();
        System.out.println("Month: " + month.getValue());
        System.out.println("day: " + localDateTime.getDayOfMonth());
        System.out.println("seconds: " + localDateTime.getSecond());

        LocalDate date3 = LocalDate.of(2014, Month.DECEMBER, 12);
        System.out.println("12 december 2014: " + date3);

        LocalTime date4 = LocalTime.of(22, 15);
        System.out.println("22点15分  : " + date4  );

        LocalTime localTime = LocalTime.parse("20:15:30");
        System.out.println("解析字符串 : " + localTime);

        System.out.println("       - - - - - - - - - - - - - - - - - - -             ");
        // 使用时区的日期时间API
        // 获取当前时间日期
        ZonedDateTime date1 = ZonedDateTime.parse("2015-12-03T10:15:30+05:30[Asia/Shanghai]");
        System.out.println("date1: " + date1);

        ZoneId id = ZoneId.of("Europe/Paris");
        System.out.println("ZoneId: " + id);

        ZoneId currentZone = ZoneId.systemDefault();
        System.out.println("当期时区: " + currentZone);

    }
}
